#Boa:Frame:RegistroLlamadas

import wx
import wx.grid
import consultasBD
import utiles

def create(parent):
    return RegistroLlamadas(parent)

[wxID_REGISTROLLAMADAS, wxID_REGISTROLLAMADASBUTTON1, 
 wxID_REGISTROLLAMADASBUTTON2, wxID_REGISTROLLAMADASBUTTON3, 
 wxID_REGISTROLLAMADASBUTTON4, wxID_REGISTROLLAMADASBUTTON5, 
 wxID_REGISTROLLAMADASDATEPICKERCTRL1, wxID_REGISTROLLAMADASGRID1, 
 wxID_REGISTROLLAMADASPANEL1, wxID_REGISTROLLAMADASRADIOBUTTON1, 
 wxID_REGISTROLLAMADASRADIOBUTTON2, wxID_REGISTROLLAMADASTEXTCTRL1, 
 wxID_REGISTROLLAMADASTEXTCTRL2, wxID_REGISTROLLAMADASTEXTCTRL3, 
 wxID_REGISTROLLAMADASTEXTCTRL4, wxID_REGISTROLLAMADASTEXTCTRL5, 
] = [wx.NewId() for _init_ctrls in range(16)]

class RegistroLlamadas(wx.Frame):
    def _init_ctrls(self, prnt):
        # generated method, don't edit
        wx.Frame.__init__(self, id=wxID_REGISTROLLAMADAS,
              name='RegistroLlamadas', parent=prnt, pos=wx.Point(377, 123),
              size=wx.Size(880, 456), style=wx.DEFAULT_FRAME_STYLE,
              title='Registro de Llamadas')
        self.SetClientSize(wx.Size(872, 429))

        self.panel1 = wx.Panel(id=wxID_REGISTROLLAMADASPANEL1, name='panel1',
              parent=self, pos=wx.Point(0, 0), size=wx.Size(872, 429),
              style=wx.TAB_TRAVERSAL)

        self.radioButton1 = wx.RadioButton(id=wxID_REGISTROLLAMADASRADIOBUTTON1,
              label='buscar por Fecha', name='radioButton1', parent=self.panel1,
              pos=wx.Point(16, 16), size=wx.Size(120, 13), style=0)
        self.radioButton1.SetValue(True)
        self.radioButton1.Bind(wx.EVT_RADIOBUTTON, self.OnRadioFecha,
              id=wxID_REGISTROLLAMADASRADIOBUTTON1)

        self.radioButton2 = wx.RadioButton(id=wxID_REGISTROLLAMADASRADIOBUTTON2,
              label='buscar por Cliente', name='radioButton2',
              parent=self.panel1, pos=wx.Point(232, 16), size=wx.Size(112, 13),
              style=0)
        self.radioButton2.SetValue(False)
        self.radioButton2.Bind(wx.EVT_RADIOBUTTON, self.OnRadioCliente,
              id=wxID_REGISTROLLAMADASRADIOBUTTON2)

        self.datePickerCtrl1 = wx.DatePickerCtrl(id=wxID_REGISTROLLAMADASDATEPICKERCTRL1,
              name='datePickerCtrl1', parent=self.panel1, pos=wx.Point(136, 16),
              size=wx.Size(80, 21), style=wx.DP_DROPDOWN | wx.DP_SHOWCENTURY)

        self.textCtrl1 = wx.TextCtrl(id=wxID_REGISTROLLAMADASTEXTCTRL1,
              name='textCtrl1', parent=self.panel1, pos=wx.Point(352, 16),
              size=wx.Size(64, 21), style=0, value='')
        self.textCtrl1.Enable(False)

        self.textCtrl2 = wx.TextCtrl(id=wxID_REGISTROLLAMADASTEXTCTRL2,
              name='textCtrl2', parent=self.panel1, pos=wx.Point(416, 16),
              size=wx.Size(200, 21), style=0, value='')
        self.textCtrl2.Enable(False)

        self.button1 = wx.Button(id=wxID_REGISTROLLAMADASBUTTON1,
              label='Buscar', name='button1', parent=self.panel1,
              pos=wx.Point(624, 16), size=wx.Size(75, 23), style=0)
        self.button1.Enable(False)
        self.button1.Bind(wx.EVT_BUTTON, self.OnBuscarCliente,
              id=wxID_REGISTROLLAMADASBUTTON1)

        self.button2 = wx.Button(id=wxID_REGISTROLLAMADASBUTTON2,
              label='Aceptar', name='button2', parent=self.panel1,
              pos=wx.Point(704, 16), size=wx.Size(75, 23), style=0)
        self.button2.Enable(True)
        self.button2.Bind(wx.EVT_BUTTON, self.OnAceptar,
              id=wxID_REGISTROLLAMADASBUTTON2)

        self.button3 = wx.Button(id=wxID_REGISTROLLAMADASBUTTON3,
              label='Limpiar', name='button3', parent=self.panel1,
              pos=wx.Point(784, 16), size=wx.Size(75, 23), style=0)
        self.button3.Bind(wx.EVT_BUTTON, self.OnLimpiar,
              id=wxID_REGISTROLLAMADASBUTTON3)

        self.grid1 = wx.grid.Grid(id=wxID_REGISTROLLAMADASGRID1, name='grid1',
              parent=self.panel1, pos=wx.Point(16, 56), size=wx.Size(840, 328),
              style=0)
        self.grid1.Bind(wx.grid.EVT_GRID_CELL_LEFT_DCLICK, self.OnDobleClick)

        self.button4 = wx.Button(id=wxID_REGISTROLLAMADASBUTTON4,
              label='Imprimir', name='button4', parent=self.panel1,
              pos=wx.Point(704, 400), size=wx.Size(75, 23), style=0)
        self.button4.Enable(False)
        self.button4.Bind(wx.EVT_BUTTON, self.OnImprimir,
              id=wxID_REGISTROLLAMADASBUTTON4)

        self.button5 = wx.Button(id=wxID_REGISTROLLAMADASBUTTON5, label='Salir',
              name='button5', parent=self.panel1, pos=wx.Point(784, 400),
              size=wx.Size(75, 23), style=0)
        self.button5.Bind(wx.EVT_BUTTON, self.OnSalir,
              id=wxID_REGISTROLLAMADASBUTTON5)

        self.textCtrl3 = wx.TextCtrl(id=wxID_REGISTROLLAMADASTEXTCTRL3,
              name='textCtrl3', parent=self.panel1, pos=wx.Point(208, 400),
              size=wx.Size(200, 21), style=0, value='')
        self.textCtrl3.Show(False)
        self.textCtrl3.SetEditable(False)

        self.textCtrl4 = wx.TextCtrl(id=wxID_REGISTROLLAMADASTEXTCTRL4,
              name='textCtrl4', parent=self.panel1, pos=wx.Point(8, 400),
              size=wx.Size(200, 21), style=0, value='')
        self.textCtrl4.Show(False)
        self.textCtrl4.SetEditable(False)

        self.textCtrl5 = wx.TextCtrl(id=wxID_REGISTROLLAMADASTEXTCTRL5,
              name='textCtrl5', parent=self.panel1, pos=wx.Point(408, 400),
              size=wx.Size(200, 21), style=0, value='')
        self.textCtrl5.Show(False)
        self.textCtrl5.SetEditable(False)

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.crearGrilla()

    def OnSalir(self, event):
        self.Close()
        
    def OnLimpiar(self, event):
        self.grid1.ClearGrid()
        for i in xrange(self.grid1.GetNumberRows()):
            self.grid1.DeleteRows()
        self.grid1.AppendRows()
        self.textCtrl1.SetLabel("")
        self.textCtrl2.SetLabel("")
        self.textCtrl3.SetLabel("")
        self.textCtrl4.SetLabel("")
        self.textCtrl5.SetLabel("")

        self.radioButton1.Enable(True)
        self.datePickerCtrl1.Enable(True)
        self.radioButton2.Enable(True)
        self.textCtrl1.SetEditable(True)
        self.textCtrl2.SetEditable(True)
        self.button1.Enable(True)
        self.button2.Enable(False) # aceptar
        self.button4.Enable(False) # imprimir

        self.radioButton1.SetValue(True)
        self.OnRadioFecha(None)
        self.radioButton1.SetFocus()
        
    def ajustarAnchoColumnas(self):
        for y in xrange(self.grid1.GetNumberCols()):
            self.grid1.AutoSizeColumn(y,True)

    def crearGrilla(self):
        columnas = ['Fecha','Hora','Duracion','Numero\nCliente','Nombre','Usuario','Resultado','Telefono','email','Localidad']
        self.grid1.CreateGrid(1,len(columnas))
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

        self.grid1.SetSelectionMode(wx.grid.Grid.wxGridSelectRows)
        self.grid1.EnableEditing(False)
        self.grid1.Refresh()

    def OnRadioFecha(self, event):
        if not self.radioButton1.GetValue():
            return
        self.textCtrl1.Enable(False)
        self.textCtrl2.Enable(False)
        self.textCtrl3.Show(False)
        self.textCtrl4.Show(False)
        self.textCtrl5.Show(False)
        self.button1.Enable(False)
        self.button2.Enable(True)
        self.datePickerCtrl1.Enable(True)
        self.datePickerCtrl1.SetFocus()
        if self.grid1.GetNumberCols()==5:
            self.grid1.AppendCols()
            self.grid1.AppendCols()
            self.grid1.AppendCols()
            self.grid1.AppendCols()
            self.grid1.AppendCols()
        columnas = ['Fecha','Hora','Duracion','Numero\nCliente','Nombre','Usuario','Resultado','Telefono','email','Localidad']
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

    def OnRadioCliente(self, event):
        if not self.radioButton2.GetValue():
            return
        self.datePickerCtrl1.Enable(False)
        self.textCtrl1.Enable(True)
        self.textCtrl2.Enable(True)
        self.textCtrl3.Show(True)
        self.textCtrl4.Show(True)
        self.textCtrl5.Show(True)
        self.button1.Enable(True)
        self.button2.Enable(False)
        self.textCtrl1.SetFocus()
        if self.grid1.GetNumberCols()==10:
            self.grid1.DeleteCols()
            self.grid1.DeleteCols()
            self.grid1.DeleteCols()
            self.grid1.DeleteCols()
            self.grid1.DeleteCols()
        columnas = ['Fecha','Hora','Duracion','Usuario','Resultado']
        for i, col in enumerate(columnas): 
            self.grid1.SetColLabelValue(i, col)

    def OnBuscarCliente(self, event):
        if self.textCtrl1.GetLabel()=="" and self.textCtrl2.GetLabel()=="":
            utiles.mensaje(None,"Debe introducir numero de cliente o nombre")
            self.textCtrl1.SetFocus()
            return
        if self.textCtrl1.GetLabel()<>"":
            idcliente = self.textCtrl1.GetLabel()
            r1 = "SELECT idcliente,nombre,telefono,email,localidad "
            r2 = "FROM cliente WHERE idcliente='"+idcliente+"'"
            consultaSQL = r1+r2
            resultado = consultasBD.ordenCrudaDict(consultaSQL)
            if resultado == () or resultado == None or len(resultado)==0:
                utiles.mensaje(None,"Numero de Cliente no encontrado")
                self.textCtrl1.SetLabel("")
                self.textCtrl2.SetLabel("")
                self.textCtrl3.SetLabel("")
                self.textCtrl4.SetLabel("")
                self.textCtrl1.SetFocus()
                return
        else:
            nombre = self.textCtrl2.GetLabel()
            r1 = "SELECT idcliente,nombre,telefono,email,localidad "
            r2 = "FROM cliente WHERE nombre LIKE '%"+nombre+"%'"
            consultaSQL = r1+r2
            resultado = consultasBD.ordenCrudaDict(consultaSQL)
            if resultado == () or resultado == None or len(resultado)==0:
                utiles.mensaje(None,"No se encontraron nombres con los datos proporcionados")
                self.textCtrl1.SetLabel("")
                self.textCtrl2.SetLabel("")
                self.textCtrl3.SetLabel("")
                self.textCtrl4.SetLabel("")
                self.textCtrl1.SetFocus()
                return
        if len(resultado)==1:
            cliente = resultado[0]
            self.textCtrl1.SetLabel(str(cliente["idcliente"]))
            self.textCtrl1.SetEditable(False)
            self.textCtrl2.SetLabel(str(cliente["nombre"]))
            self.textCtrl2.SetEditable(False)
            self.textCtrl3.SetLabel(str(cliente["telefono"]))
            self.textCtrl3.Show(True)
            self.textCtrl4.SetLabel(str(cliente["email"]))
            self.textCtrl4.Show(True)
            self.textCtrl5.SetLabel(str(cliente["localidad"]))
            self.textCtrl5.Show(True)
            self.button1.Enable(False) # buscar
            self.button2.Enable(True) # aceptar
            self.button2.SetFocus()
            return
        import BuscarClientes
        dlg = BuscarClientes.Dialog1(self,resultado)
        try:
            dlg.ShowModal()
        finally:
            if dlg.seleccion == "":
                self.textCtrl2.SetFocus()
                return
            cliente = dlg.seleccion
            dlg.Destroy()
        self.textCtrl1.SetLabel(str(cliente["idcliente"]))
        self.textCtrl1.SetEditable(False)
        self.textCtrl2.SetLabel(str(cliente["nombre"]))
        self.textCtrl2.SetEditable(False)
        self.textCtrl3.SetLabel(str(cliente["telefono"]))
        self.textCtrl3.Show(True)
        self.textCtrl4.SetLabel(str(cliente["email"]))
        self.textCtrl4.Show(True)
        self.textCtrl5.SetLabel(str(cliente["localidad"]))
        self.textCtrl5.Show(True)
        self.button1.Enable(False) # buscar
        self.button2.Enable(True) # aceptar
        self.button2.SetFocus()
        return

    def OnAceptar(self, event):
        if self.radioButton2.GetValue():
            if self.textCtrl1.GetLabel()=="" and self.textCtrl2.GetLabel()=="":
                utiles.mensaje(None,"Debe introducir numero de cliente o nombre")
                self.textCtrl1.SetFocus()
                return
        self.radioButton1.Enable(False)
        self.datePickerCtrl1.Enable(False)
        self.radioButton2.Enable(False)
        self.textCtrl1.SetEditable(False)
        self.textCtrl2.SetEditable(False)
        self.button1.Enable(False) # buscar
        self.button4.Enable(True) # imprimir

        if self.radioButton1.GetValue(): #por fecha
            fecha = str(self.datePickerCtrl1.GetLabel())
            fecha = utiles.invertirFecha(fecha)
            condicion = " fecha LIKE '%"+fecha+"%' "
            orden = ""
        else:
            idcliente = self.textCtrl1.GetLabel()
            condicion = " idcliente='"+idcliente+"' "
            orden = " DESC "

        r1 = "SELECT fecha,idcliente,duracion,resultado,usuario "
        r2 = "FROM clientehistorial WHERE"+condicion
        r3 = "ORDER BY fecha DESC "
        consultaSQL = r1+r2
        resultado = consultasBD.ordenCrudaDict(consultaSQL)
        if resultado == () or resultado == None or len(resultado)==0:
            utiles.mensaje(None,"No se encontraron datos")
            self.OnLimpiar(None)
            return

        if self.radioButton1.GetValue(): #por fecha
            for fila,item in enumerate(resultado):
                fecha = utiles.invertirFecha2(str(item["fecha"]).split(" ")[0])
                hora = str(item["fecha"]).split(" ")[1]
                duracion = item["duracion"]
                resultado = item["resultado"]
                usuario = item["usuario"]
                idcliente = item["idcliente"]
                
                r1 = "SELECT nombre,telefono,email,localidad FROM cliente "
                r2 = "WHERE idcliente='"+idcliente+"' "
                consultaSQL = r1+r2
                cliente = consultasBD.ordenCrudaDict(consultaSQL)
                if cliente == () or cliente == None or len(cliente)==0:
                    nombre = ""
                    telefono = ""
                    email = ""
                    localidad = ""
                else:
                    nombre = cliente[0]["nombre"]
                    telefono = cliente[0]["telefono"]
                    email = cliente[0]["email"]
                    localidad = cliente[0]["localidad"]
            
                #Fecha,Hora,Duracion,NroCliente,Nombre,Usuario,Resultado,Telefono,email,localidad
                #0     1    2        3          4      5       6         7        8     9
                self.grid1.SetCellValue(fila,0,fecha)
                self.grid1.SetCellValue(fila,1,hora)
                self.grid1.SetCellValue(fila,2,duracion)
                self.grid1.SetCellValue(fila,3,idcliente)
                self.grid1.SetCellValue(fila,4,nombre)
                self.grid1.SetCellValue(fila,5,usuario)
                self.grid1.SetCellValue(fila,6,resultado)
                self.grid1.SetCellValue(fila,7,telefono)
                self.grid1.SetCellValue(fila,8,email)
                self.grid1.SetCellValue(fila,9,localidad)
                self.grid1.AppendRows()
            self.ajustarAnchoColumnas()
        else: #por cliente
            for fila,item in enumerate(resultado):
                fecha = utiles.invertirFecha2(str(item["fecha"]).split(" ")[0])
                hora = str(item["fecha"]).split(" ")[1]
                duracion = item["duracion"]
                resultado = item["resultado"]
                usuario = item["usuario"]
                
                #Fecha,Hora,Duracion,Usuario,Resultado
                #0     1    2        3       4
                self.grid1.SetCellValue(fila,0,fecha)
                self.grid1.SetCellValue(fila,1,hora)
                self.grid1.SetCellValue(fila,2,duracion)
                self.grid1.SetCellValue(fila,3,resultado)
                self.grid1.SetCellValue(fila,4,usuario)
                self.grid1.AppendRows()
            self.ajustarAnchoColumnas()

    def OnDobleClick(self, event):
        fila = self.grid1.GetGridCursorRow()
        #Fecha,Hora,Duracion,NroCliente,Nombre,Usuario,Resultado,Telefono,email,localidad
        #0     1    2        3          4      5       6         7        8     9
        #Fecha,Hora,Duracion,Usuario,Resultado
        #0     1    2        3       4
        fecha = self.grid1.GetCellValue(fila,0)
        if fecha == "":
            return
        fecha = utiles.invertirFecha(fecha)
        hora  = self.grid1.GetCellValue(fila,1)
        fecha = fecha + " " + hora
        if self.radioButton1.GetValue():
            idcliente = self.grid1.GetCellValue(fila,3)
            nombre = self.grid1.GetCellValue(fila,4)
            telefono = self.grid1.GetCellValue(fila,7)
            email = self.grid1.GetCellValue(fila,8)
            localidad = self.grid1.GetCellValue(fila,9)
        else:
            idcliente = self.textCtrl1.GetLabel()
            nombre = self.textCtrl2.GetLabel()
            telefono = self.textCtrl3.GetLabel()
            email = self.textCtrl4.GetLabel()
            localidad = self.textCtrl5.GetLabel()
        datos = {"idcliente":idcliente,"nombre":nombre,"telefono":telefono}
        datos["email"]=email
        datos["localidad"]=localidad
        try:
            sql = "SELECT cumple FROM cliente WHERE idcliente='"+idcliente+"'"
            cumple = consultasBD.ordenCruda(sql)
            datos["cumple"]=str(cumple[0][0])
        except:
            datos["cumple"]=""
        r1 = "SELECT * FROM clientehistorial "
        r2 = "WHERE fecha='"+fecha+"' AND idcliente='"+idcliente+"' "
        sql = r1+r2
        resultado = consultasBD.ordenCrudaDict(sql)
        if resultado == () or resultado == None or len(resultado)<>1:
            utiles.mensaje(None,"No se encontro informacion")
            self.button2.SetFocus()
            return
        item = resultado[0]
        lista = []
        lista.append(str(item["fecha"]))
        lista.append(item["horacomienzo"])
        lista.append(item["horafinaliza"])
        lista.append(item["duracion"])
        lista.append(item["resultado"])
        lista.append(item["texto"])
        lista.append(item["usuario"])
        
        activado = False
        import HistorialClienteComunica
        appBack = HistorialClienteComunica.create(None,datos,activado,lista)
        appBack.Show()
        return

    def OnImprimir(self, event):
        print "Imprimiendo"
        f=open("c:\\matrisamor.doc\\reporte-registroComunicaciones.html","w")
        numeroPagina = 1
        nrosuc,nombresuc = utiles.datosSucursal()
        
        totalItemPorPagina = 55
        totalPaginas = int(self.grid1.GetNumberRows()-1) / totalItemPorPagina 
        totalPaginas+= 1

        def encabezadoPagina(texto):
            fecha = utiles.getfechaTime()
            a = '<table width="100%" cellspacing="0" border="0">\n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="left" width="33%"><font size="0.1">'
            a+= 'SUSSAN BOUTIQUE Registro Comunicaciones<br>'+nombresuc+'</font></td>\n'
            a+= '<td valign="top" align="left" width="34%"><font size="0.1">'
            a+= '<br>'
            a+= '</font></td>\n'
            a+= '<td valign="top" align="right" width="33%"><font size="0.1">'+fecha
            a+= '<br>P&aacute;gina '+str(numeroPagina)+' / '+str(totalPaginas)+'</font></td>\n'
            a+= '</tr>\n'
            a+= '</table></font>\n'
            a+= '<hr>\n'
            texto+= a
            return texto
        
        def encabezadoTabla(texto):
            a = '<table width="100%" cellspacing="1" border="0"> \n'
            a+= '<tr>\n'
            a+= '<td valign="top" align="right"><font size="0.1">orden</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Fecha</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Hora</font></td>\n'
            a+= '<td valign="top" align="center"><font size="0.1">Duracion</font></td>\n'
            a+= '<td valign="top" align="right"><font size="0.1">Numero<br>Cliente</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Nombre</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Usuario</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Resultado</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Telefono</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">email</font></td>\n'
            a+= '<td valign="top" align="left"><font size="0.1">Localidad</font></td> \n'
            a+= '</tr>\n'
            a+= '<tr>\n'
            a+= '<td colspan="11"><hr></td>\n'
            a+= '</tr>\n'
            texto+= a
            return texto
        
        cadena = '<?xml version="1.0" encoding="utf-8" ?> \n'
        cadena+= '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> \n'
        cadena+= '<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> \n'
        cadena+= '<head> \n'
        cadena+= '<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> \n'
        cadena+= '<meta name="generator" content="Docutils 0.4.1: http://docutils.sourceforge.net/" /> \n'
        cadena+= '<title>Sussan Boutique</title> \n'
        cadena+= '</head> \n'
        cadena+= '<body> \n'

        cadena = encabezadoPagina(cadena)
        cadena = encabezadoTabla(cadena)
        f.write(cadena)
        
        renglon = 0
        idcliente = self.textCtrl1.GetLabel()
        nombre = self.textCtrl2.GetLabel()
        telefono = self.textCtrl4.GetLabel()
        email = self.textCtrl3.GetLabel()
        localidad = self.textCtrl5.GetLabel()
        for i in xrange(self.grid1.GetNumberRows()-1):
        #PTC,CodSussan,Descripcion,Talle,Color,Stock\nCentral,Stock\nParana,Stock\nSaska,Stock\nPeatonal
            fecha = self.grid1.GetCellValue(i,0)
            hora = self.grid1.GetCellValue(i,1)
            duracion = self.grid1.GetCellValue(i,2)
            usuario = self.grid1.GetCellValue(i,3)[:15]
            resultado = self.grid1.GetCellValue(i,4)[:15]
            if self.radioButton1.GetValue():
                usuario = self.grid1.GetCellValue(i,5)[:15]
                resultado = self.grid1.GetCellValue(i,6)[:15]
                idcliente = self.grid1.GetCellValue(i,3)
                nombre = self.grid1.GetCellValue(i,4)[:20]
                telefono = self.grid1.GetCellValue(i,7)
                email = self.grid1.GetCellValue(i,8)
                localidad = self.grid1.GetCellValue(i,9)[:20]

            orden = str(i+1)

            cadena = '<tr>\n'
            cadena+= '<td valign="center" align="right"><font size="0.1">'+orden+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+fecha+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+hora+'</font></td> \n'
            cadena+= '<td valign="center" align="center"><font size="0.1">'+duracion+'</font></td> \n'
            cadena+= '<td valign="center" align="right"><font size="0.1">'+idcliente+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+nombre+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+usuario+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+resultado+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+telefono+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+email+'</font></td> \n'
            cadena+= '<td valign="center" align="left"><font size="0.1">'+localidad+'</font></td> \n'
            cadena+= '</tr>\n'
            try:
                f.write(cadena)
            except:
                print cadena
            
            renglon+= 1
            
            if renglon >= totalItemPorPagina :
                renglon = 0
                f.write("</table><!-- salto de pagina -->\n")
                f.write("<p STYLE='page-break-after: always;'></p>\n")
##                for i in xrange(numeroPagina):
##                    f.write("<br>\n")
                numeroPagina+= 1
                cadena = encabezadoPagina("")
                cadena = encabezadoTabla(cadena)
                f.write(cadena)
            
        cadena = '</table>\n'
        cadena+= '<br><font size="0.1">Total &iacute;tems: '+str(self.grid1.GetNumberRows()-1)+'</font>\n'
        cadena+= '<br><font size="0.1">Total p&aacute;ginas: '+str(numeroPagina)+'</font>\n'
        cadena+= '</body>\n</html>\n'
        f.write(cadena)
        f.close()

        import os
        os.system("taskkill /IM firefox.exe /F")
        os.system("c:\\explorer.lnk c:\\matrisamor.doc\\reporte-registroComunicaciones.html")
